As the speed of host computational systems increase, one of the primary system bottlenecks becomes the inefficiency in retrieving data from peripheral storage subsystems. Such subsystems have been typically based on magnetic or hard disk technology. The mechanical components of this technology (e.g. the disk rotation and read/write head movement components), cause these subsystems to be inherently slow in comparison to the electronic speeds of the host computational systems they are designed to support. Various strategies have been devised to increase the data transfer rate of hard disk technology. One such strategy combines a relatively small volatile solid state data cache together with a hard disk such that data items that are most frequently accessed are maintained in the cache. Since such a cache has a substantially higher data transfer rate than a hard disk, a significant increase in host data processing efficiency can be obtained. In fact, the larger this cache the better performance can be expected from the host system when processing data transfer intensive applications. There are however disadvantages to this strategy. In particular, since most of the information for anticipating future data requirements of host applications reside in the host, for most efficient cache use, the host must make decisions as to what data should be retained in the cache. This implies that the host must be capable of managing such characteristics as the size of data items in the cache, when data items are to be placed in the cache and when they are to be replaced by other items more likely to be accessed. However, since there are no cache/host interface standards, any host/hard disk cache interface strategy will be restricted to a narrow range of host systems. The disk controller, therefore, is left with the responsibility of managing the data transfer between the cache, the hard disk and the host. In such cases the controller usually supplies a relatively simple, and less than optimal, data caching strategy such as the strategy where the most recently accessed data is always stored in the cache regardless of the access frequency. This drawback can, of course, be overcome to some extent by increasing the cache size, but cache memory under utilization is an expensive disadvantage.
More recently, an alternative strategy to alleviate the hard disk data transfer bottleneck has been devised. Solid state memory devices, known as "solid state disks" (SSDs), have been introduced that interface to host systems using the same interface standards as have been applied to hard disks, for example, the Small Computer Systems Interface (SCSI) standard. Thus, a host can configure SSD storage, set performance parameters and transfer data as if an SSD were a standard conforming hard disk. Thus, each SSD provides data transfer rates comparable to those of a host system plus the capability to communicate properly with most host systems without host or SSD modifications. There are however drawbacks to SSD technology also. The memory within substantially all SSDs is relatively small and possibly volatile. Thus, by necessity a host system using an SSD also uses a larger non-volatile peripheral storage as well, typically hard disks. However, having a peripheral storage composed of both hard disks and SSD devices leads to increased hardware expense (e.g. separate power units and cabling), increased demands on space to accommodate the storage devices and increased maintenance costs. This is particularly unfortunate in that much of the hardware and associated software for both hard disks and SSDs are similar internally as well as having identical host interfaces.
It would be beneficial to be able to combine a hard disk and SSD into a single unit thus reducing the duplication in hardware and software, and thereby reducing the peripheral storage costs. It is well known in the art how to configure a single hard disk controller to manage the data transfer between a host system and a plurality of hard disks, thus reducing hardware and software duplication. However, combining an SSD and a hard disk requires a different approach. Since an SSD is already capable of transferring data at electronic rates, any disk controller data caching is both unnecessary and wasteful for data items stored on the SSD. Moreover, an SSD does not require the controller to provide as elaborate an internal data formatting structure as a hard disk requires. For example, no "pad bytes" are necessary to account for a rotational displacement resulting from the time taken by hard disk logic computations in verifying a correct disk sector for a read or write. In fact, due to the significantly higher cost per byte of storage for an SSD in comparison to a hard disk, it is mandatory that this superfluous structure be omitted. Finally, if volatile memory is used in an SSD, preventing the loss of data during power failures must be addressed somewhat differently than in the multiple hard disk configuration.